/**
 * 获取token
 * @desc app调用api login，返回token
 *      预留测试使用，在config/TOKEN配置
 */
import sdk from 'sdk'
import { TOKEN } from 'utils/config'
import storage from 'utils/helper/storage'
import ajax from '@/api'
// import Vue from 'vue'

export default (notCallLogin = false) => {
  return new Promise(async (resolve, reject) => {
    let token = null
    let UA = require('utils/ua').default
    if (!UA.isAppWebview && !UA.isWxWebview) {
      token = TOKEN
    } else {
      if (UA.isAppWebview) {
        // app端
        let res = await sdk.login({
          // 用户未登录时是否拉起登录
          notCallLogin
        })
        token = res && res.token
      } else if (UA.isWxWebview) {
        // 微信端
        token = storage.get('AUTHORIZATION')
        if (token) { // 有token的情况下需要判断token是否有效
          try {
            // 缓解按钮点击延迟过大带来的差体验
            // Vue.prototype.$loading({
            //   mask: true,
            //   closeOnClickMask: false
            // })
            // 设置token到ajax请求头
            // 设置header
            store.commit('SAVE_TOKEN', token)
          } catch (res) {
            // 只要接口报错就默认未登录，但是不清除本地token信息，防止因服务端问题清除本地登录态
            // 401的情况已经在ajax中处理
            token = null
          } finally {
            // Vue.prototype.$loading.close()
          }
        }
      }
    }

    if (token) {
      store.commit('SAVE_TOKEN', token)
      
      resolve(token)
    } else {
      reject()
    }
  })
}
